home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / one_scrs / asm / scro.asm < prev    next >
Encoding:
Assembly Source File  |  1996-07-19  |  12.8 KB  |  306 lines

  1.                 .386p
  2.         .model flat, c
  3.         locals
  4.         .code
  5.  
  6.                 public          scroller
  7.  
  8.                 extrn           fontbuffer      :dword
  9.                 extrn           scrollbuffer    :dword
  10.                 extrn           scrollend       :dword
  11.  
  12.                 screenwidth     dd      256 ;320
  13.                 screenheight    dd      256 ;200
  14.                 actrow          dd      0
  15.                 hspacewidth     dd      5
  16.                 vspacewidth     dd      20
  17.                 charheights     dd      30
  18.                 kisbetuptr      dd      0
  19.                 nagybetuptr     dd      320*40
  20.                 numbersptr      dd      320*75
  21.                 scharwidths     dw      0  ,12          ;a
  22.                                 dw      12 ,13          ;b
  23.                                 dw      25 ,12          ;c
  24.                                 dw      37 ,13          ;d
  25.                                 dw      50 ,13          ;e
  26.                                 dw      63 ,08          ;f
  27.                                 dw      71 ,12          ;g
  28.                                 dw      83 ,13          ;h
  29.                                 dw      96 ,06          ;i
  30.                                 dw      102,08          ;j
  31.                                 dw      110,13          ;k
  32.                                 dw      123,06          ;l
  33.                                 dw      129,19          ;m
  34.                                 dw      148,12          ;n
  35.                                 dw      160,13          ;o
  36.                                 dw      173,12          ;p
  37.                                 dw      185,13          ;q
  38.                                 dw      198,09          ;r
  39.                                 dw      207,11          ;s
  40.                                 dw      218,08          ;t
  41.                                 dw      227,13          ;u
  42.                                 dw      240,12          ;v
  43.                                 dw      252,18          ;w
  44.                                 dw      270,13          ;x
  45.                                 dw      283,12          ;y
  46.                                 dw      295,12          ;z
  47.                 bcharwidths     dw      0  ,13          ;a
  48.                                 dw      13 ,12          ;b
  49.                                 dw      25 ,12          ;c
  50.                                 dw      37 ,13          ;d
  51.                                 dw      50 ,11          ;e
  52.                                 dw      61 ,09          ;f
  53.                                 dw      70 ,13          ;g
  54.                                 dw      83 ,13          ;h
  55.                                 dw      96 ,06          ;i
  56.                                 dw      102,10          ;j
  57.                                 dw      112,13          ;k
  58.                                 dw      125,10          ;l
  59.                                 dw      135,14          ;m
  60.                                 dw      149,12          ;n
  61.                                 dw      161,13          ;o
  62.                                 dw      174,11          ;p
  63.                                 dw      185,12          ;q
  64.                                 dw      197,12          ;r
  65.                                 dw      209,11          ;s
  66.                                 dw      220,11          ;t
  67.                                 dw      231,12          ;u
  68.                                 dw      243,12          ;v
  69.                                 dw      255,16          ;w
  70.                                 dw      271,13          ;x
  71.                                 dw      284,12          ;y
  72.                                 dw      296,12          ;z
  73.                 ncharwidths     dw      0  ,13          ;0
  74.                                 dw      13 ,09          ;1
  75.                                 dw      22 ,12          ;2
  76.                                 dw      34 ,11          ;3
  77.                                 dw      45 ,12          ;4
  78.                                 dw      57 ,12          ;5
  79.                                 dw      69 ,12          ;6
  80.                                 dw      81 ,12          ;7
  81.                                 dw      93 ,12          ;8
  82.                                 dw      105,12          ;9
  83.                                 dw      117,06          ;!
  84.                                 dw      123,12          ;?
  85.                                 dw      135,06          ;:
  86.                                 dw      141,05          ;.
  87.                                 dw      146,07          ;,
  88.                                 dw      153,11          ;+
  89.                                 dw      164,06          ;-
  90.                                 dw      170,12          ;/
  91.  
  92.                 textptr         dd      0
  93.                 sorptr          dd      0
  94.  
  95.                 scrolltext      db      '       Group greets go to:',254
  96.                                 db      254
  97.                                 db      '                Abaddon',254
  98.                                 db 254
  99.                                 db      '               Astroidea',254
  100.                                 db 254
  101.                                 db      '                 Capanna',254
  102.                                 db 254
  103.                                 db      '         Controlled Dreams',254
  104.                                 db 254
  105.                                 db      '            Criminal Gang',254
  106.                                 db 254
  107.                                 db      '           Enlightenment',254
  108.                                 db 254
  109.                                 db      '                    Exact',254
  110.                                 db 254
  111.                                 db      '               Exhumers',254
  112.                                 db 254
  113.                                 db      '                   Fiction',254
  114.                                 db 254
  115.                                 db      '                      Firg',254
  116.                                 db 254
  117.                                 db      '                      Grif',254
  118.                                 db 254
  119.                                 db      '                Hurricane',254
  120.                                 db 254
  121.                                 db      '                Hydrogen',254
  122.                                 db 254
  123.                                 db      '               Infomaniax',254
  124.                                 db 254
  125.                                 db      '          Machine Fun Crew',254
  126.                                 db 254
  127.                                 db      '             Murmidones',254
  128.                                 db 254
  129.                                 db      '                    Opium',254
  130.                                 db 254
  131.                                 db      '                   Promise',254
  132.                                 db 254
  133.                                 db      '                    Remal',254
  134.                                 db 254
  135.                                 db      '                 Tracktor',254
  136.                                 db 254
  137.                                 db      '                 Unicorn',254
  138.                                 db 254
  139.                                 db      '             United Force',254
  140.                                 db 254
  141.                                 db      '                  Urinate',254
  142.                                 db      '                             ',254
  143.                                 db      '                             ',254
  144.                                 db      '                             ',254
  145.                                 db      254
  146.                                 db      254
  147.                                 db      254
  148.                                 db      254
  149.                                 db      254
  150.                                 db      254
  151.                                 db      255
  152.  
  153.                 
  154. scroller:       pushad
  155.  
  156.                 call    scrollup
  157.                 call    onerow
  158.  
  159.                 popad
  160.                 ret
  161.  
  162. onerow:         pushad
  163.                 mov     eax,actrow
  164.                 cmp     eax,charheights
  165.                 jna     morerow
  166.                 mov     actrow,0
  167. srche:          lea     esi,scrolltext
  168.                 add     esi,textptr
  169.                 cmp     byte ptr [esi],254
  170.                 jae     efound
  171.                 inc     textptr
  172.                 jmp     srche
  173. efound:         inc     textptr
  174. morerow:        lea     esi,scrolltext
  175.                 add     esi,textptr
  176.                 mov     edi,scrollbuffer
  177.                 mov     eax,screenwidth
  178.                 mul     screenheight
  179.                 sub     eax,screenwidth
  180.                 add     edi,eax
  181.  
  182. oneloop:        mov     eax,0
  183.                 lodsb
  184.                 cmp     al,254
  185.                 je      endofrow
  186.                 cmp     al,255
  187.                 je      endofrow2
  188.                 cmp     al,'a'
  189.                 jb      nemkisbetu
  190.                 cmp     al,'z'
  191.                 ja      nemkisbetu
  192.                 push    esi
  193.                 mov     esi,fontbuffer
  194.                 add     esi,kisbetuptr
  195.                 sub     al,61h
  196.                 movzx   ecx,word ptr scharwidths[eax*4]
  197.                 add     esi,ecx
  198.                 movzx   ecx,word ptr scharwidths[eax*4+2]
  199.                 mov     eax,320
  200.                 mul     actrow
  201.                 add     esi,eax
  202.                 rep     movsb
  203.                 pop     esi
  204.                 jmp     oneloop
  205.  
  206. nemkisbetu:     cmp     al,'A'
  207.                 jb      nemnagybetu
  208.                 cmp     al,'Z'
  209.                 ja      nemnagybetu
  210.                 push    esi
  211.                 mov     esi,fontbuffer
  212.                 add     esi,nagybetuptr
  213.                 sub     al,41h
  214.                 movzx   ecx,word ptr bcharwidths[eax*4]
  215.                 add     esi,ecx
  216.                 movzx   ecx,word ptr bcharwidths[eax*4+2]
  217.                 mov     eax,320
  218.                 mul     actrow
  219.                 add     esi,eax
  220.                 rep     movsb
  221.                 pop     esi
  222.                 jmp     oneloop
  223.  
  224. nemnagybetu:    cmp     al,20h
  225.                 jne     nemspace
  226.                 mov     ecx,hspacewidth
  227.                 mov     al,0
  228.                 rep     stosb
  229.                 jmp     oneloop
  230.  
  231. nemspace:       cmp     al,'0'
  232.                 jb      nemszam
  233.                 cmp     al,'9'
  234.                 ja      nemszam
  235. rechar:         push    esi
  236.                 mov     esi,fontbuffer
  237.                 add     esi,numbersptr
  238.                 sub     al,30h
  239.                 movzx   ecx,word ptr ncharwidths[eax*4]
  240.                 add     esi,ecx
  241.                 movzx   ecx,word ptr ncharwidths[eax*4+2]
  242.                 mov     eax,320
  243.                 mul     actrow
  244.                 add     esi,eax
  245.                 rep     movsb
  246.                 pop     esi
  247.                 jmp     oneloop
  248. nemszam:        cmp     al,'!'
  249.                 jne     nemfelk
  250.                 mov     al,10+48
  251.                 jmp     rechar
  252. nemfelk:        cmp     al,'?'
  253.                 jne     nemkerd
  254.                 mov     al,11+48
  255.                 jmp     rechar
  256. nemkerd:        cmp     al,':'
  257.                 jne     nemkett
  258.                 mov     al,12+48
  259.                 jmp     rechar
  260. nemkett:        cmp     al,'.'
  261.                 jne     nempont
  262.                 mov     al,13+48
  263.                 jmp     rechar
  264. nempont:        cmp     al,','
  265.                 jne     nemvesz
  266.                 mov     al,14+48
  267.                 jmp     rechar
  268. nemvesz:        cmp     al,'+'
  269.                 jne     nemplusz
  270.                 mov     al,15+48
  271.                 jmp     rechar
  272. nemplusz:       cmp     al,'-'
  273.                 jne     nemminusz
  274.                 mov     al,16+48
  275.                 jmp     rechar
  276. nemminusz:      cmp     al,'/'
  277.                 jne     nemslash
  278.                 mov     al,17+48
  279.                 jmp     rechar
  280.  
  281. nemslash:       jmp     oneloop
  282. endofrow:       mov     sorptr,0
  283.                 inc     actrow
  284.                 popad
  285.                 ret
  286. endofrow2:      mov     sorptr,0
  287.                 inc     actrow
  288.                 mov     scrollend,1
  289.                 popad
  290.                 ret
  291.  
  292. scrollup:       pushad
  293.                 mov     esi,scrollbuffer
  294.                 add     esi,screenwidth
  295.                 mov     edi,scrollbuffer
  296.                 mov     eax,screenwidth
  297.                 mul     screenheight
  298.                 sub     eax,screenwidth
  299.                 mov     ecx,eax
  300.                 shr     ecx,2
  301.                 rep     movsd
  302.                 popad
  303.                 ret
  304.  
  305.                 end
  306.